home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr11 / pd0836.zip / IOCTL.ASM < prev    next >
Assembly Source File  |  1993-04-30  |  3KB  |  95 lines

  1. ;***    IOCTL.ASM - Demonstrate DoubleSpace System API IOCtl calls
  2. ;
  3. ;       This code calls DBLSPACE.BIN to flush, and then flush and
  4. ;       invalidate, its internal caches for drive C.
  5. ;
  6. ;       Version 1.00.02  15-Mar-1993
  7.  
  8.  
  9. MD_STAMP    EQU     'DM'
  10.  
  11.  
  12. ;***    DSPACKET - Packet for IOCtl read call to DBLSPACE.BIN
  13. ;
  14. ;
  15. dspacket    STRUC
  16. dspStamp    DW      ?           ; Identifying stamp ('DM')
  17. dspCommand  DB      ?           ; Command (F or I)
  18. dspResult   DW      ?           ; Result code ('OK' if OK, else unchanged)
  19. dspPadding  DB      5 DUP (?)   ; Padding
  20. dspacket    ENDS
  21.  
  22.  
  23. stack   SEGMENT STACK
  24.         DW  500 DUP (?)
  25. stack   ENDS
  26.  
  27.  
  28. data    SEGMENT
  29.  
  30. dsp     dspacket <MD_STAMP>
  31.  
  32. msgFF   db  'FLUSH call failed',0Dh,0Ah,'$'
  33. msgFS   db  'FLUSH call succeeded',0Dh,0Ah,'$'
  34. msgIF   db  'INVALIDATE call failed',0Dh,0Ah,'$'
  35. msgIS   db  'INVALIDATE call succeeded',0Dh,0Ah,'$'
  36.  
  37. data    ENDS
  38.  
  39.  
  40. code    SEGMENT
  41.     ASSUME  CS:code
  42.  
  43. main    PROC
  44.  
  45.         MOV     AX,data
  46.         MOV     DS,AX
  47.     ASSUME  DS:data
  48.  
  49. ;*  Do Flush request
  50.  
  51.         MOV     AX,4404h            ; IOCtl read command
  52.         MOV     BL,3                ; drive C (1-based!)
  53.         MOV     CX,SIZE dspacket    ; buffer length
  54.         MOV     DX,OFFSET dsp       ; IOCTL packet
  55.         MOV     dsp.dspCommand,'F'  ; Flush command
  56.         MOV     dsp.dspResult,'??'  ; clear success indicator
  57.         INT     21h
  58.         MOV     DX,OFFSET msgFF     ; Assume failure
  59.         CMP     dsp.dspResult,'OK'  ; Test for success
  60.         JNE     ds10                ; Call failed
  61.  
  62.         MOV     DX,OFFSET msgFS     ; Success
  63.  
  64. ds10:   MOV     AH,9                ; Print string
  65.         INT     21h
  66.  
  67. ;*  Do Invalidate request
  68.  
  69.         MOV     AX,4404h            ; IOCtl read command
  70.         MOV     BL,3                ; drive letter (1-based!)
  71.         MOV     CX,SIZE dspacket    ; buffer length
  72.         MOV     DX,OFFSET dsp       ; IOCTL packet
  73.         MOV     dsp.dspCommand,'I'  ; Flush command
  74.         MOV     dsp.dspResult,'??'  ; clear success indicator
  75.         INT     21h
  76.         MOV     DX,OFFSET msgIF     ; Assume failure
  77.         CMP     dsp.dspResult,'OK'  ; Test for success
  78.         JNE     ds20                ; Call failed
  79.  
  80.         MOV     DX,OFFSET msgIS     ; Success
  81.  
  82. ds20:   MOV     AH,9                ; Print string
  83.         INT     21h
  84.  
  85. ;*  Return to MS-DOS
  86.  
  87.         MOV     AX,4C00h
  88.         INT     21h
  89.  
  90. main    ENDP
  91.  
  92. code    ENDS
  93.  
  94.         END     main
  95.